package br.affCorp.controller.persistence.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import br.affCorp.controller.persistence.ConnectionSingleton;
import br.affCorp.model.ObjetoDeAprendizagemDTO;

public class ObjetoDeAprendizagemDAO {

	private Connection conn = null;
	private PreparedStatement ps = null;
	private ResultSet rs = null;

	public void inserir(ObjetoDeAprendizagemDTO objetoDeAprendizagemDTO)
			throws Exception {
		try {
			this.conn = ConnectionSingleton.getConnection();
			StringBuffer sb = new StringBuffer();

			sb.append(" INSERT INTO OBJETOS_DE_APRENDIZAGEM	");
			sb.append("	   (CODIGO,			");
			sb.append("	    USUARIO_LOGIN,				");
			sb.append("	    LOCALIZACAO,				");
			sb.append("		DATA_CADASTRO)		");
			sb.append("	VALUES					");
			sb.append("	   (?,					");
			sb.append("	    ?,					");
			sb.append("	    ?,					");
			sb.append("	    SYSDATE)			");

			ps = conn.prepareStatement(sb.toString());

			ps.setString(1, objetoDeAprendizagemDTO.getCodigo());
			ps.setString(2, objetoDeAprendizagemDTO.getDono().getLogin());
			ps.setString(3, objetoDeAprendizagemDTO.getLocalizacao());

			ps.executeUpdate();

		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			ConnectionSingleton.closeConnection(conn, ps);
		}
	}

	public boolean obterCodigo(ObjetoDeAprendizagemDTO objetoDeAprendizagemDTO)
			throws Exception {
		boolean response = false;
		try {
			this.conn = ConnectionSingleton.getConnection();
			StringBuffer sb = new StringBuffer();

			sb.append(" SELECT					");
			sb.append("	   CODIGO,			");
			sb.append("	   USUARIO_LOGIN			");
			sb.append("	FROM					");
			sb.append("	   OBJETOS_DE_APRENDIZAGEM				");
			sb.append("	WHERE					");
			sb.append("	   LOCALIZACAO = ?		");

			ps = conn.prepareStatement(sb.toString());

			ps.setString(1, objetoDeAprendizagemDTO.getLocalizacao());

			rs = ps.executeQuery();

			if (rs.next()) {
				objetoDeAprendizagemDTO.setCodigo(rs.getString("CODIGO"));
				objetoDeAprendizagemDTO.setDominio(rs
						.getString("USUARIO_LOGIN"));
				response = true;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			ConnectionSingleton.closeConnection(conn, ps, rs);
		}
		return response;
	}
}
